import { NBorder, NFont, NFill } from './style.interface';
export namespace NExcel {
    export interface ICellType {
        render: any;
        editor: any;
    }
    export type CellTypeName = string;
    export const CanvasToken = 'CanvasToken';
    export const ConfigToken = 'CONFIG_TOKEN';
    export const OperateContainerToken = 'OperateContainerToken';
    export const EditorContainerToken = 'EditorContainerToken';
    export const TableDataCanvasToken = 'TableDataCanvasToken';
    export const TableDataCanvasFillToken = "TableDataCanvasFillToken";
    export const TableContainerEleToken = 'TableContainerEleToken';
    export const TableFreezeCanvasToken = 'TableFreezeCanvasToken';
    export interface IConfig {
        defaultRowHeight: number;
        defaultRowHeaderWidth: number;
    }

}
export type TSelectRanage = {
    row: number;
    col: number;
    rowspan: number;
    colspan: number;
}
export type TMergeCell = TSelectRanage;
export type TSelectBorder = {
    left: HTMLElement,
    right: HTMLElement,
    top: HTMLElement,
    bottom: HTMLElement,
    dot: HTMLElement,
    container: HTMLElement,
    bg: HTMLElement
}
export abstract class BaseCommand {
    abstract execute(): boolean;
    abstract redo(): boolean;
}
export abstract class APlugin {
    static readonly pluginName: string;
    public abstract init():void;
    public abstract destroy():void;
}
export interface IStatusDo {
    canNextDo: boolean;
    canReDo: boolean;
}
export interface ISelectStatus {
    hasSelected: boolean;
}
export interface IStatus extends IStatusDo, ISelectStatus{

    
}

export interface ICellBaseControl {
    type: 'row'|'col'|'full';
    position: number;
    span: number
}
export interface ICellBorderControl{
    border: NBorder.IBorder
}

export interface ICellFontControl {
    font: NFont.IFont
}

export interface ICellFillControl {
    fill: NFill.IFill;
}
export interface ICellTypeControl {
    cellType: string;
}
export type TCellControl = TCellControlValue & ICellBaseControl;

export type TCellControlValue = ICellBorderControl | ICellFontControl | ICellFillControl | ICellTypeControl;